﻿namespace TimeSaver
{
    using System;
    using Common.Base;
    using UserManagement;

    // Типи в'юшок. Юзається для того, шоб задати початкову в'юшку в конструкторі MainController
    public enum ViewTypes
    {
        LoginView
    }

    /// <summary>
    /// Main controller(core). Provides communication between subsystems and main window.
    /// </summary>
    public sealed class MainController
    {
        private SubsystemController controller;

        public event ViewChangedEventHandler ViewChanged;

        public void Initialize()
        {
            // Щоб змінити початкову в'юшку, переприсвоюємо defaultView і дописуєм потрібний кейз.
            ViewTypes defaultView = ViewTypes.LoginView;
            switch (defaultView)
            {
                case ViewTypes.LoginView:
                    {
                        this.controller = new UserManagementController();
                        this.controller.ViewChanged += this.OnViewChanged;
                        (this.controller as UserManagementController).Initialize();
                        break;
                    }
            }
        }

        private void OnViewChanged(BaseView view)
        {
            if (this.ViewChanged != null)
            {
                this.ViewChanged(view);
                GC.Collect(2);
            }
        }
    }
}